<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/debugobjects.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/debugobjects.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX0RFQlVHT0JKRUNUU19IXzA_"><span class="b">_LINUX_DEBUGOBJECTS_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX0RFQlVHT0JKRUNUU19IXzA_"><span class="b">_LINUX_DEBUGOBJECTS_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">spinlock</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> 
<a name="7" /><span class="Maybe">       7:</span> <span class="m">enum</span> <span class="b">debug_obj_state</span> <span class="f">{</span>
<a name="8" /><span class="Maybe">       8:</span>     <span class="b">ODEBUG_STATE_NONE</span><span class="f">,</span>
<a name="9" /><span class="Maybe">       9:</span>     <span class="b">ODEBUG_STATE_INIT</span><span class="f">,</span>
<a name="10" /><span class="Maybe">      10:</span>     <span class="b">ODEBUG_STATE_INACTIVE</span><span class="f">,</span>
<a name="11" /><span class="Maybe">      11:</span>     <span class="b">ODEBUG_STATE_ACTIVE</span><span class="f">,</span>
<a name="12" /><span class="Maybe">      12:</span>     <span class="b">ODEBUG_STATE_DESTROYED</span><span class="f">,</span>
<a name="13" /><span class="Maybe">      13:</span>     <span class="b">ODEBUG_STATE_NOTAVAILABLE</span><span class="f">,</span>
<a name="14" /><span class="Maybe">      14:</span>     <span class="b">ODEBUG_STATE_MAX</span><span class="f">,</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">}</span><span class="f">;</span>
<a name="16" /><span class="Maybe">      16:</span> 
<a name="17" /><span class="Maybe">      17:</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span><span class="f">;</span>
<a name="18" /><span class="Maybe">      18:</span> 
<a name="19" /><span class="Maybe">      19:</span> <span class="k">/**</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * struct debug_obj - representaion of an tracked object</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> * @node:    hlist node to link the object into the tracker list</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> * @state:    tracked object state</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="k"> * @astate:    current active state</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="k"> * @object:    pointer to the real object</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="k"> * @descr:    pointer to an object type specific debug description structure</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="k"> */</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="m">struct</span> <span class="b">debug_obj</span> <span class="f">{</span>
<a name="28" /><span class="Maybe">      28:</span>     <span class="m">struct</span> <span class="b">hlist_node</span>    <span class="b">node</span><span class="f">;</span>
<a name="29" /><span class="Maybe">      29:</span>     <span class="m">enum</span> <span class="b">debug_obj_state</span>    <span class="b">state</span><span class="f">;</span>
<a name="30" /><span class="Maybe">      30:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">astate</span><span class="f">;</span>
<a name="31" /><span class="Maybe">      31:</span>     <span class="m">void</span>            <span class="f">*</span><span class="b">object</span><span class="f">;</span>
<a name="32" /><span class="Maybe">      32:</span>     <span class="m">struct</span> <span class="b">debug_obj_descr</span>    <span class="f">*</span><span class="b">descr</span><span class="f">;</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">}</span><span class="f">;</span>
<a name="34" /><span class="Maybe">      34:</span> 
<a name="35" /><span class="Maybe">      35:</span> <span class="k">/**</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="k"> * struct debug_obj_descr - object type specific debug description structure</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="k"> *</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k"> * @name:        name of the object typee</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="k"> * @debug_hint:        function returning address, which have associated</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> *            kernel symbol, to allow identify the object</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> * @fixup_init:        fixup function, which is called when the init check</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> *            fails</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * @fixup_activate:    fixup function, which is called when the activate check</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> *            fails</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * @fixup_destroy:    fixup function, which is called when the destroy check</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> *            fails</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * @fixup_free:        fixup function, which is called when the free check</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> *            fails</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> * @fixup_assert_init:  fixup function, which is called when the assert_init</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> *            check fails</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="k"> */</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">{</span>
<a name="53" /><span class="Maybe">      53:</span>     <span class="m">const</span> <span class="m">char</span>        <span class="f">*</span><span class="b">name</span><span class="f">;</span>
<a name="54" /><span class="Maybe">      54:</span>     <span class="m">void</span> <span class="f">*</span><span class="f">(</span><span class="f">*</span><span class="b">debug_hint</span><span class="f">)</span>    <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="55" /><span class="Maybe">      55:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_init</span><span class="f">)</span>    <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">enum</span> <span class="b">debug_obj_state</span> <span class="b">state</span><span class="f">)</span><span class="f">;</span>
<a name="56" /><span class="Maybe">      56:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_activate</span><span class="f">)</span>    <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">enum</span> <span class="b">debug_obj_state</span> <span class="b">state</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="Maybe">      57:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_destroy</span><span class="f">)</span>    <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">enum</span> <span class="b">debug_obj_state</span> <span class="b">state</span><span class="f">)</span><span class="f">;</span>
<a name="58" /><span class="Maybe">      58:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_free</span><span class="f">)</span>    <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">enum</span> <span class="b">debug_obj_state</span> <span class="b">state</span><span class="f">)</span><span class="f">;</span>
<a name="59" /><span class="Maybe">      59:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_assert_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">enum</span> <span class="b">debug_obj_state</span> <span class="b">state</span><span class="f">)</span><span class="f">;</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="f">}</span><span class="f">;</span>
<a name="61" /><span class="Maybe">      61:</span> 
<a name="62" /><span class="False">      62:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_OBJECTS</span>
<a name="63" /><span class="False">      63:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_object_init</span>      <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="64" /><span class="False">      64:</span> <span class="m">extern</span> <span class="m">void</span>
<a name="65" /><span class="False">      65:</span> <span class="b">debug_object_init_on_stack</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="66" /><span class="False">      66:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">debug_object_activate</span>  <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="67" /><span class="False">      67:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_object_deactivate</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="False">      68:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_object_destroy</span>   <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="69" /><span class="False">      69:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_object_free</span>      <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="70" /><span class="False">      70:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_object_assert_init</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span><span class="f">;</span>
<a name="71" /><span class="False">      71:</span> 
<a name="72" /><span class="False">      72:</span> <span class="k">/*</span>
<a name="73" /><span class="False">      73:</span> <span class="k"> * Active state:</span>
<a name="74" /><span class="False">      74:</span> <span class="k"> * - Set at 0 upon initialization.</span>
<a name="75" /><span class="False">      75:</span> <span class="k"> * - Must return to 0 before deactivation.</span>
<a name="76" /><span class="False">      76:</span> <span class="k"> */</span>
<a name="77" /><span class="False">      77:</span> <span class="m">extern</span> <span class="m">void</span>
<a name="78" /><span class="False">      78:</span> <span class="b">debug_object_active_state</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">,</span>
<a name="79" /><span class="False">      79:</span>               <span class="m">unsigned</span> <span class="m">int</span> <span class="b">expect</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">next</span><span class="f">)</span><span class="f">;</span>
<a name="80" /><span class="False">      80:</span> 
<a name="81" /><span class="False">      81:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_objects_early_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="82" /><span class="False">      82:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_objects_mem_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="f">#</span><span class="n">else</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="b">debug_object_init</span>      <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="b">debug_object_init_on_stack</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="b">debug_object_activate</span>  <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="90" /><span class="Maybe">      90:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="b">debug_object_deactivate</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="92" /><span class="Maybe">      92:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="b">debug_object_destroy</span>   <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="94" /><span class="Maybe">      94:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="95" /><span class="Maybe">      95:</span> <span class="b">debug_object_free</span>      <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="96" /><span class="Maybe">      96:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="97" /><span class="Maybe">      97:</span> <span class="b">debug_object_assert_init</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">debug_obj_descr</span> <span class="f">*</span><span class="b">descr</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="98" /><span class="Maybe">      98:</span> 
<a name="99" /><span class="Maybe">      99:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">debug_objects_early_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">debug_objects_mem_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="f">#</span><span class="n">endif</span>
<a name="102" /><span class="Maybe">     102:</span> 
<a name="103" /><span class="False">     103:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_OBJECTS_FREE</span>
<a name="104" /><span class="False">     104:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">debug_check_no_obj_freed</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">address</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="105" /><span class="Maybe">     105:</span> <span class="f">#</span><span class="n">else</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="107" /><span class="Maybe">     107:</span> <span class="b">debug_check_no_obj_freed</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">address</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="f">#</span><span class="n">endif</span>
<a name="109" /><span class="Maybe">     109:</span> 
<a name="110" /><span class="True">     110:</span> <span class="f">#</span><span class="n">endif</span>
<a name="111" /><span class="True">     111:</span> </pre>
  </body>
</html>
